const Router = require('koa-router')

const jwt = require('jsonwebtoken')
const UserModel = require('../models/user')
const wxLib = require('../wx')
const conf = require('../conf')

const route = new Router({ prefix: '/api/user' })

// 登录
route.post('/login', async (ctx) => {
    let data = {
        isLogin: false,
        msg: '',
    }
    const { code } = ctx.request.body
    /*
        1. 拿到 用户 openid
        2. 查询数据库, 用户是否存在
            3. 存在直接返回用户信息
            4. 不存在 获取用户头像昵称
            5. 存入数据库
        6. jwt 签名
    */

    // 1. 拿到 用户 openid
    let tokenObj = await wxLib.getUserAccessToken(code)
    const { openid, access_token } = tokenObj
    // 2. 查询数据库, 用户是否存在
    let user = await UserModel.findOne({ openid })
    if (!user) {
        console.log('4. 不存在 获取用户头像昵称')
        // 4. 不存在 获取用户头像昵称
        let userInfo = await wxLib.getUserInfo(access_token)
        // 5. 存入数据库
        data.data = await UserModel.create({...userInfo})
        data.success = true
    } else {
        console.log('3. 存在直接返回用户信息')
        // 3. 存在直接返回用户信息
        data.data = user
    }
    // 6. jwt 签名
    data.token = jwt.sign({ openid }, conf.secret)
    ctx.body = data
})

module.exports = route
